From 4f07a27df74775e35775d34e800abfd683c5fa86 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 17 Feb 2024 21:50:17 -0800 Subject: feat(badges): optionally hide missing badges --- src/routes/user/[user]/badges/+page.svelte | 454 +++++++++++++++-------------- 1 file changed, 232 insertions(+), 222 deletions(-) (limited to 'src/routes/user/[user]/badges') diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index bf575161..9b74abd8 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -19,6 +19,7 @@ import SettingHint from '$lib/Settings/SettingHint.svelte'; import Popup from '$lib/Popup.svelte'; import FallbackImage from '$lib/FallbackImage.svelte'; + import FallbackBadge from '$lib/FallbackBadge.svelte'; // import { io } from 'socket.io-client'; export let data; @@ -401,250 +402,259 @@ {:then ungroupedBadges} -
- {#await awcPromise then badges} - {#await badges.text() then text} - {@const parsedBadges = awcBadgesGrouped(text)} + {#await fetch(root(`/api/preferences?id=${identity.id}`))} + + + + {:then rawPreferences} + {#await rawPreferences.json()} + + + + {:then preferences} +
+ {#await awcPromise then badges} + {#await badges.text() then text} + {@const parsedBadges = awcBadgesGrouped(text)} + + {#if parsedBadges.length > 0} + {#each parsedBadges as group} +
+ + Anime Watching Club | + {group.group} + + +

+ +

+ {#each group.badges as badge} + + + + {/each} +
+
+ +

+ {/each} + {/if} + {/await} + {/await} - {#if parsedBadges.length > 0} - {#each parsedBadges as group} -

- - Anime Watching Club | - {group.group} - + {#if ungroupedBadges === null} + -

+ + {:else} + {@const groupedBadges = Object.entries(groupBadges(ungroupedBadges))} -

- {#each group.badges as badge} - - - - {/each} -
-
+ {#if isOwner} +
+ {$locale().user.badges.backToProfile} + + + + - - - - {#if editMode && isOwner} - {@const groups = groupedBadges - .map((group) => group[0]) - .filter((group) => group !== 'Uncategorised')} - -

- - {#if error} -

{error}

- {/if} + importMode = !importMode; + }} + > + {importMode + ? $locale().user.badges.importMode.disable + : $locale().user.badges.importMode.enable} + - - - - ({ - name: group, - url: '#', - onClick: () => { - const category = document.querySelector('input[name="category"]'); - - if (category instanceof HTMLInputElement) category.value = group; - } - }))} - header={false} - center={false} - > - + {#if editMode && isOwner} + {@const groups = groupedBadges + .map((group) => group[0]) + .filter((group) => group !== 'Uncategorised')} + +

+ + {#if error} +

{error}

+ {/if} + + -
-
- - {#if selectedBadge} - {$locale().user.badges.editMode.or} - - {/if} - - - Must be full date and time, defaults to now if any fields empty - - {/if} -
- {/if} - -

- - {#if ungroupedBadges.length === 0} -

- {/if} - - {#each groupedBadges as [category, badges]} -
- {category} - -

- -

-
+
+ {/if} - {#if groupedBadges[groupedBadges.length - 1][0] !== category}

+ + {#if ungroupedBadges.length === 0} +

+ {/if} + + {#each groupedBadges as [category, badges]} +
+ {category} + +

+ +

+
+ + {#if groupedBadges[groupedBadges.length - 1][0] !== category} +

+ {/if} + {/each} {/if} - {/each} - {/if} -

+ + {:catch} + Could not parse badges + {/await} + {:catch} + Could not fetch badges + {/await} {:catch} Could not parse badges {/await} -- cgit v1.2.3